Records এর ডিক্লারেশন এবং Fields এর Accessing
Records F# এর একটি গুরুত্বপূর্ণ ডেটা টাইপ যা সাধারণত একটি বেসিক ডেটা স্ট্রাকচার হিসাবে ব্যবহৃত হয়। এটি একাধিক ভিন্ন ধরনের ডেটা ধারণ করতে পারে, এবং এটি একযোগে তাদেরকে একটি সেট হিসাবে ধারণ করে। F# এ records ব্যবহার করা হয় যখন আপনি কোনো নির্দিষ্ট কাঠামো বা ডেটার সংকলন পরিচালনা করতে চান, যেমন নাম, বয়স, ঠিকানা ইত্যাদি।
১. Records এর ডিক্লারেশন
Record হল একটি ধরনের কাস্টম ডেটা টাইপ যা একটি গ্রুপে একাধিক ভ্যালু (ফিল্ড) ধারণ করতে সক্ষম। এটি মূলত ডেটার জন্য একটি কাস্টম স্ট্রাকচার তৈরি করতে ব্যবহৃত হয়, যেখানে আপনি একাধিক মান (fields) একত্রে রাখতে পারেন।
Record এর ডিক্লারেশন:
F# এ record ডিক্লারেশন একটি নতুন টাইপ তৈরির মাধ্যমে করা হয়। সাধারণত type কিওয়ার্ড দিয়ে একটি নতুন record টাইপ ডিফাইন করা হয় এবং এর মধ্যে বিভিন্ন ফিল্ড (fields) থাকে।
// Define a record type called 'Person'
type Person = {
Name: string
Age: int
Address: string
}এখানে, Person একটি record টাইপ যা তিনটি ফিল্ড ধারণ করে: Name, Age, এবং Address। ফিল্ডগুলির প্রতিটির একটি নির্দিষ্ট টাইপ (যেমন, string, int) রয়েছে।
২. Records এর Instance তৈরি করা
একটি record টাইপের instance তৈরি করতে, আপনি সাধারণত নাম এবং মান ব্যবহার করে এটি ইনস্ট্যান্সিয়েট করেন।
Record instance তৈরি:
// Create an instance of 'Person' record
let person1 = { Name = "John Doe"; Age = 30; Address = "123 Main St" }এখানে, person1 হলো Person টাইপের একটি instance যার ফিল্ডগুলোর মান দেয়া হয়েছে।
৩. Records এর Fields এর Accessing
একটি record এর ফিল্ডগুলোর মান অ্যাক্সেস করা খুবই সহজ। আপনি সরাসরি . (ডট) ব্যবহার করে ফিল্ডের মান অ্যাক্সেস করতে পারেন।
Record Fields এর Accessing:
// Accessing fields of 'person1'
let name = person1.Name
let age = person1.Age
let address = person1.Address
printfn "Name: %s, Age: %d, Address: %s" name age addressএখানে, person1.Name দ্বারা person1 record এর Name ফিল্ডের মান অ্যাক্সেস করা হয়েছে। একইভাবে, অন্যান্য ফিল্ডও অ্যাক্সেস করা হয়েছে।
৪. Records এর Immutable Nature
F# এ records ডিফল্টভাবে immutable (অপরিবর্তনীয়)। একবার একটি record instance তৈরি হলে, আপনি এর ফিল্ডের মান পরিবর্তন করতে পারবেন না। তবে, আপনি চাইলে mutable ফিল্ড ব্যবহার করতে পারেন।
Immutable Record:
// Immutable record: you cannot change the fields directly
person1.Name <- "Jane Doe" // This will result in a compile-time errorএখানে, আপনি যদি Name ফিল্ডের মান পরিবর্তন করার চেষ্টা করেন, তাহলে এটি কম্পাইল টাইমে ত্রুটি (error) দেবে, কারণ person1 একটি immutable record।
Mutable Fields:
আপনি যদি একটি mutable field তৈরি করতে চান, তাহলে এটি mutable কিওয়ার্ড দিয়ে ডিফাইন করতে হবে।
type Person = {
mutable Name: string
Age: int
Address: string
}
let person2 = { Name = "John Doe"; Age = 40; Address = "456 Elm St" }
person2.Name <- "Jane Doe" // This is allowed because Name is mutableএখানে, Name ফিল্ডটি mutable হিসেবে ডিফাইন করা হয়েছে, তাই আপনি এর মান পরিবর্তন করতে পারবেন।
৫. Copying Records and Updating Fields
F# এ আপনি একটি record এর একটি কপি তৈরি করতে পারেন এবং ফিল্ডগুলোর মান পরিবর্তন করতে পারেন। এটি একটি নিরাপদ এবং কার্যকরী পদ্ধতি, কারণ এটি একটি নতুন কপি তৈরি করে এবং মূল রেকর্ডটি অপরিবর্তিত থাকে।
Copying a Record and Updating Fields:
let person3 = { person2 with Name = "Alice" }
printfn "Original Name: %s, Updated Name: %s" person2.Name person3.Nameএখানে, person3 একটি নতুন record instance যা person2 এর কপি। তবে, Name ফিল্ডের মান "Alice" দিয়ে আপডেট করা হয়েছে। এই পদ্ধতিতে, মূল person2 record অপরিবর্তিত থাকে এবং একটি নতুন রেকর্ড তৈরি হয়।
৬. Records and Pattern Matching
F# এ pattern matching ব্যবহার করে আপনি সহজে records এর ফিল্ডগুলো যাচাই করতে পারেন।
Pattern Matching with Records:
let describePerson person =
match person with
| { Name = name; Age = age; Address = address } when age > 18 ->
printfn "%s is an adult living at %s." name address
| { Name = name; Age = age; Address = _ } when age <= 18 ->
printfn "%s is a minor." name
| _ -> printfn "Unknown person."এখানে, describePerson ফাংশনে person নামক একটি record instance এর ফিল্ডগুলো যাচাই করা হয়েছে। pattern matching ব্যবহার করে Name, Age, এবং Address ফিল্ডের মানগুলো পরীক্ষা করা হয়েছে এবং age এর উপর ভিত্তি করে ফলাফল প্রদান করা হয়েছে।
উপসংহার
F# এ records হল একটি শক্তিশালী ডেটা টাইপ যা একাধিক মানকে একটি গ্রুপে ধারণ করতে সহায়তা করে। আপনি সহজেই record টাইপ তৈরি করতে পারেন, তার ফিল্ড অ্যাক্সেস করতে পারেন এবং match বা pattern matching এর মাধ্যমে তাদের যাচাই করতে পারেন। F# এ records ডিফল্টভাবে immutable হলেও, আপনি চাইলে mutable fields ব্যবহার করে কিছু ফিল্ড পরিবর্তন করতে পারেন। এটি খুবই উপযোগী যখন ডেটার একটি নির্দিষ্ট কাঠামো বা গ্রুপের প্রয়োজন হয়, এবং এতে কোডের পাঠযোগ্যতা এবং পরিষ্কারতা বৃদ্ধি পায়।
Read more